7.5. Crear enlaces simbólicos personalizados para Dispositivos

7.5.1. Enlaces simbólicos CD-ROM

Algunos programas de software que puede que quieras instalar más adelante (por ejemplo, varios reproductores de medios) esperan que existan los enlaces simbólicos /dev/cdrom y /dev/dvd y apuntan a un dispositivo de CD-ROM o DVD-ROM. También, puede ser conveniente colocar referencias a esos enlaces simbólicos en /etc/fstab. Udev incluye un script que va a generar archivos de reglas para crear estos enlaces simbólicos automáticamente, dependiendo de las capacidades de cada dispositivo, pero tiene que decidir cuál de los dos modos de operación desea que realice este script.

En primer lugar, el script puede funcionar en modo by-path donde las reglas que crea dependen de la ruta física del dispositivo de CD o DVD. En segundo lugar, puede funcionar en modo by-id mode (por defecto para los dispositivos IDE y SCSI), donde las reglas que crea dependen de cadenas de identificación almacenados en el CD o el propio dispositivo DVD. La ruta está determinada por lapath_id del script Udev, y las cadenas de identificación se leen desde el hardware de sus programas ata_id o scsi_id dependiendo de qué tipo de dispositivo tenga.

Hay ventajas en cada método, el enfoque correcto a utilizar dependerá de qué tipo de cambios pueden suceder sobre los dispositivos. Si usted espera que la ruta de acceso físico al dispositivo (es decir, los puertos y/o ranuras de los que estén conectados) puedan cambiar, por ejemplo, porque planea mover la unidad a un puerto IDE diferente o un conector USB distinto, entonces debería utilizar el modo "by-id". Por otro lado, si usted espera que la identificación del dispositivo pueda cambiar, por ejemplo, ya que éste puede morir, y deberá reemplazarlo con un dispositivo diferente con las mismas capacidades y que se conecta a los mismos conectores, entonces usted debe utilizar el método "by-path".

Si cualquiera de los tipos de cambio es posible que le ocurra al dispositivo, entonces elija un modo basado en el tipo de cambio que se espera que suceda con más frecuencia.

[Important]

Importante

Los dispositivos externos (por ejemplo, una unidad de CD con conexión USB) no deben usar by-path, ya que cada vez que el dispositivo está conectado a un puerto nuevo externo, su ruta física cambiará. Todos los dispositivos conectados externamente tendrán este problema si escribes reglas Udev para reconocerlos por su ruta física; el problema no se limita a las unidades de CD y DVD.

Si usted desea ver los valores que los scripts Udev usarán para el dispositivo de CD-ROM adecuado, encuentra el directorio correspondiente bajo/sys (por ejemplo, esto puede ser /sys/block/hdd) y ejecute un comando similar al siguiente:

udevadm test /sys/block/hdd

Mira las líneas que contienen la salida de los diversos programas *_id. El modo "by-id" usará el valor ID_SERIAL si existe y no está vacío, de lo contrario, utilizará una combinación de ID_MODEL e ID_REVISION. El modo "by-path" utilizará el valor ID_PATH.

Si el modo predeterminado no es adecuado para su situación, a continuación, la siguiente modificación se puede hacer en el archivo/etc/udev/rules.d/83-cdrom-symlinks.rules de la siguiente manera, donde el mode es uno de dos: by-id o by-path):

sed -i -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
    /etc/udev/rules.d/83-cdrom-symlinks.rules

Tenga en cuenta que no es necesario crear los archivos de reglas o enlaces simbólicos en este momento, porque usted ha montado el directorio /dev del huésped en el sistema LFS, y asumimos que existen los enlaces simbólicos en el host. Las normas y los enlaces simbólicos se crean la primera vez que arranque el sistema LFS.

Sin embargo, si tiene varios dispositivos de CD-ROM, entonces, los enlaces simbólicos generados en ese momento pueden apuntar a diferentes dispositivos a los que señalan en el host, ya que los dispositivos no se descubren en un orden predecible. Las asignaciones creadas la primera vez que arranca el sistema LFS serán estables, así que esto es sólo un problema si usted necesita los enlaces simbólicos en ambos sistemas para que apunte al mismo dispositivo. Si necesita esto, a continuación, inspeccione (y posiblemente edite) el archivo generado/etc/udev/rules.d/70-persistent-cd.rules después de arrancar, para asegurarse de que los enlaces simbólicos asignados coinciden con lo que usted necesita.

7.5.2. Tratar con dispositivos duplicados

Como se explicó en la Section 7.4, “Device and Module Handling on an LFS System”,el orden en que los dispositivos con la misma función aparecen en /dev dev es aleatorio. Por ejemplo, si usted tiene una cámara web USB y un sintonizador de TV, a veces /dev/video0 se refiere a la camara y /dev/video1 se refiere al sintonizador,y, a veces después de un reinicio el orden puede ser el contrario. Para todas las clases de harware, excepto tarjetas de sonido y tarjetas de red, esto puede solucionarse creando reglas udev para personalizar enlaces simbólicos persistentes. El caso de las tarjetas de red se cubre en Section 7.2, “General Network Configuration”, y la configuración de la tarjeta de sonido se puede encontrar en BLFS.

Para cada uno de los dispositivos que es probable que tenga este problema (incluso si el problema no existe en tu distribución Linux actual), encuentra el directorio correspondiente bajo /sys/class o /sys/block. Para los dispositivos de vídeo, este puede ser /sys/class/video4linux/videoX. Averigua los atributos que identifican de forma única el dispositivo (por lo general, los proveedores y los ID de producto y/o los números de serie):

udevadm info -a -p /sys/class/video4linux/video0

Luego, escribe las reglas que crean los enlaces simbólicos, por ejemplo:

cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"

# Persistent symlinks for webcam and tuner
KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", \
    SYMLINK+="webcam"
KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", \
    SYMLINK+="tvtuner"

EOF

El resultado es que los dispositivos /dev/video0 y /dev/video1 todavía se refieren al azar para el sintonizador y la cámara web (y por lo tanto nunca debe ser usado directamente), pero hay enlaces simbólicos /dev/tvtuner and /dev/webcam que siempre apuntan al dispositivo correcto.